from posthog.schema import CurrencyCode

# This is a list with all the currencies we support
#
# We don't support all currencies, because not all currencies are easy to collect data for
# both historically but also in our daily/hourly Dagster job collecting data from OXR.
#
# If you need a currency that's not in this list, you can add it to the list by
# updating `historical.csv` to include historical information about the new currency
# since January 1st 2000.
#
# You'll also need to update the Dagster job to start including that new currency,
# you might need to backfill data for that currency as well.
SUPPORTED_CURRENCIES: dict[CurrencyCode, str] = {
    CurrencyCode.AED: "United Arab Emirates Dirham",
    CurrencyCode.AFN: "Afghan Afghani",
    CurrencyCode.ALL: "Albanian Lek",
    CurrencyCode.AMD: "Armenian Dram",
    CurrencyCode.ANG: "Netherlands Antillean Guilder",
    CurrencyCode.AOA: "Angolan Kwanza",
    CurrencyCode.ARS: "Argentine Peso",
    CurrencyCode.AUD: "Australian Dollar",
    CurrencyCode.AWG: "Aruban Florin",
    CurrencyCode.AZN: "Azerbaijani Manat",
    CurrencyCode.BAM: "Bosnia-Herzegovina Convertible Mark",
    CurrencyCode.BBD: "Barbadian Dollar",
    CurrencyCode.BDT: "Bangladeshi Taka",
    CurrencyCode.BGN: "Bulgarian Lev",
    CurrencyCode.BHD: "Bahraini Dinar",
    CurrencyCode.BIF: "Burundian Franc",
    CurrencyCode.BMD: "Bermudan Dollar",
    CurrencyCode.BND: "Brunei Dollar",
    CurrencyCode.BOB: "Bolivian Boliviano",
    CurrencyCode.BRL: "Brazilian Real",
    CurrencyCode.BSD: "Bahamian Dollar",
    CurrencyCode.BTC: "Bitcoin",
    CurrencyCode.BTN: "Bhutanese Ngultrum",
    CurrencyCode.BWP: "Botswanan Pula",
    CurrencyCode.BYN: "Belarusian Ruble",
    CurrencyCode.BZD: "Belize Dollar",
    CurrencyCode.CAD: "Canadian Dollar",
    CurrencyCode.CDF: "Congolese Franc",
    CurrencyCode.CHF: "Swiss Franc",
    CurrencyCode.CLP: "Chilean Peso",
    CurrencyCode.CNY: "Chinese Yuan",
    CurrencyCode.COP: "Colombian Peso",
    CurrencyCode.CRC: "Costa Rican Colón",
    CurrencyCode.CVE: "Cape Verdean Escudo",
    CurrencyCode.CZK: "Czech Republic Koruna",
    CurrencyCode.DJF: "Djiboutian Franc",
    CurrencyCode.DKK: "Danish Krone",
    CurrencyCode.DOP: "Dominican Peso",
    CurrencyCode.DZD: "Algerian Dinar",
    CurrencyCode.EGP: "Egyptian Pound",
    CurrencyCode.ERN: "Eritrean Nakfa",
    CurrencyCode.ETB: "Ethiopian Birr",
    CurrencyCode.EUR: "Euro",
    CurrencyCode.FJD: "Fijian Dollar",
    CurrencyCode.GBP: "British Pound Sterling",
    CurrencyCode.GEL: "Georgian Lari",
    CurrencyCode.GHS: "Ghanaian Cedi",
    CurrencyCode.GIP: "Gibraltar Pound",
    CurrencyCode.GMD: "Gambian Dalasi",
    CurrencyCode.GNF: "Guinean Franc",
    CurrencyCode.GTQ: "Guatemalan Quetzal",
    CurrencyCode.GYD: "Guyanaese Dollar",
    CurrencyCode.HKD: "Hong Kong Dollar",
    CurrencyCode.HNL: "Honduran Lempira",
    CurrencyCode.HRK: "Croatian Kuna",  # Only available until Dec 31st 2022
    CurrencyCode.HTG: "Haitian Gourde",
    CurrencyCode.HUF: "Hungarian Forint",
    CurrencyCode.IDR: "Indonesian Rupiah",
    CurrencyCode.ILS: "Israeli New Sheqel",
    CurrencyCode.INR: "Indian Rupee",
    CurrencyCode.IQD: "Iraqi Dinar",
    CurrencyCode.IRR: "Iranian Rial",
    CurrencyCode.ISK: "Icelandic Króna",
    CurrencyCode.JMD: "Jamaican Dollar",
    CurrencyCode.JOD: "Jordanian Dinar",
    CurrencyCode.JPY: "Japanese Yen",
    CurrencyCode.KES: "Kenyan Shilling",
    CurrencyCode.KGS: "Kyrgystani Som",
    CurrencyCode.KHR: "Cambodian Riel",
    CurrencyCode.KMF: "Comorian Franc",
    CurrencyCode.KRW: "South Korean Won",
    CurrencyCode.KWD: "Kuwaiti Dinar",
    CurrencyCode.KYD: "Cayman Islands Dollar",
    CurrencyCode.KZT: "Kazakhstani Tenge",
    CurrencyCode.LAK: "Laotian Kip",
    CurrencyCode.LBP: "Lebanese Pound",
    CurrencyCode.LKR: "Sri Lankan Rupee",
    CurrencyCode.LRD: "Liberian Dollar",
    CurrencyCode.LTL: "Lithuanian Litas",  # Only available until Dec 31st 2014
    CurrencyCode.LVL: "Latvian Lats",  # Only available until Dec 31st 2013
    CurrencyCode.LSL: "Lesotho Loti",
    CurrencyCode.LYD: "Libyan Dinar",
    CurrencyCode.MAD: "Moroccan Dirham",
    CurrencyCode.MDL: "Moldovan Leu",
    CurrencyCode.MGA: "Malagasy Ariary",
    CurrencyCode.MKD: "Macedonian Denar",
    CurrencyCode.MMK: "Myanma Kyat",
    CurrencyCode.MNT: "Mongolian Tugrik",
    CurrencyCode.MOP: "Macanese Pataca",
    CurrencyCode.MRU: "Mauritanian Ouguiya",
    CurrencyCode.MTL: "Maltese Lira",  # Only available until Dec 31st 2007
    CurrencyCode.MUR: "Mauritian Rupee",
    CurrencyCode.MVR: "Maldivian Rufiyaa",
    CurrencyCode.MWK: "Malawian Kwacha",
    CurrencyCode.MXN: "Mexican Peso",
    CurrencyCode.MYR: "Malaysian Ringgit",
    CurrencyCode.MZN: "Mozambican Metical",
    CurrencyCode.NAD: "Namibian Dollar",
    CurrencyCode.NGN: "Nigerian Naira",
    CurrencyCode.NIO: "Nicaraguan Córdoba",
    CurrencyCode.NOK: "Norwegian Krone",
    CurrencyCode.NPR: "Nepalese Rupee",
    CurrencyCode.NZD: "New Zealand Dollar",
    CurrencyCode.OMR: "Omani Rial",
    CurrencyCode.PAB: "Panamanian Balboa",
    CurrencyCode.PEN: "Peruvian Nuevo Sol",
    CurrencyCode.PGK: "Papua New Guinean Kina",
    CurrencyCode.PHP: "Philippine Peso",
    CurrencyCode.PKR: "Pakistani Rupee",
    CurrencyCode.PLN: "Polish Zloty",
    CurrencyCode.PYG: "Paraguayan Guarani",
    CurrencyCode.QAR: "Qatari Rial",
    CurrencyCode.RON: "Romanian Leu",
    CurrencyCode.RSD: "Serbian Dinar",
    CurrencyCode.RUB: "Russian Ruble",
    CurrencyCode.RWF: "Rwandan Franc",
    CurrencyCode.SAR: "Saudi Riyal",
    CurrencyCode.SBD: "Solomon Islands Dollar",
    CurrencyCode.SCR: "Seychellois Rupee",
    CurrencyCode.SDG: "Sudanese Pound",
    CurrencyCode.SEK: "Swedish Krona",
    CurrencyCode.SGD: "Singapore Dollar",
    CurrencyCode.SRD: "Surinamese Dollar",
    CurrencyCode.SSP: "South Sudanese Pound",
    CurrencyCode.STN: "São Tomé and Príncipe Dobra",
    CurrencyCode.SYP: "Syrian Pound",
    CurrencyCode.SZL: "Swazi Lilangeni",
    CurrencyCode.THB: "Thai Baht",
    CurrencyCode.TJS: "Tajikistani Somoni",
    CurrencyCode.TMT: "Turkmenistani Manat",
    CurrencyCode.TND: "Tunisian Dinar",
    CurrencyCode.TOP: "Tongan Pa'anga",
    CurrencyCode.TRY_: "Turkish Lira",  # Named `TRY_` in Python because `TRY` is a reserved word
    CurrencyCode.TTD: "Trinidad and Tobago Dollar",
    CurrencyCode.TWD: "New Taiwan Dollar",
    CurrencyCode.TZS: "Tanzanian Shilling",
    CurrencyCode.UAH: "Ukrainian Hryvnia",
    CurrencyCode.UGX: "Ugandan Shilling",
    CurrencyCode.USD: "United States Dollar",
    CurrencyCode.UYU: "Uruguayan Peso",
    CurrencyCode.UZS: "Uzbekistan Som",
    CurrencyCode.VES: "Venezuelan Bolívar Soberano",
    CurrencyCode.VND: "Vietnamese Dong",
    CurrencyCode.VUV: "Vanuatu Vatu",
    CurrencyCode.WST: "Samoan Tala",
    CurrencyCode.XAF: "CFA Franc BEAC",
    CurrencyCode.XCD: "East Caribbean Dollar",
    CurrencyCode.XOF: "CFA Franc BCEAO",
    CurrencyCode.XPF: "CFP Franc",
    CurrencyCode.YER: "Yemeni Rial",
    CurrencyCode.ZAR: "South African Rand",
    CurrencyCode.ZMW: "Zambian Kwacha",
}

SUPPORTED_CURRENCY_CODES: set[CurrencyCode] = set(SUPPORTED_CURRENCIES.keys())
SUPPORTED_CURRENCY_NAMES: set[str] = set(SUPPORTED_CURRENCIES.values())
